//
//  xlx_action.h
//  指令处理
//
//  data 2024/8/20.
//

#ifndef __XLX_ACTION__H__
#define __XLX_ACTION__H__

// 指令类型，来自哪个通道 
typedef enum {
    // 平台通道 
    ACTION_TYPE_WEB,
    // 短信通道 
    ACTION_TYPE_SMS,
    // AT通道 
    ACTION_TYPE_AT,
}ACTION_TYPE;

typedef enum{
    // 需要回复 
    ACTION_REPLY_YES,
    // 不需要回复 
    ACTION_REPLY_NO,
    // 通过平台的方式回复 
    ACTION_REPLY_WEB,
}ACTION_REPLY;// 回复类型 

typedef struct{
    ACTION_TYPE t;// 指令来自哪个通道 
    unsigned short actionid;// 服务器下发的任务id 
    const char *tel;// 如果是短信通道，则有电话号码 
    int argc;// 解析出多少个参数 
    char **argv;// 存放参数处 
    ACTION_REPLY reply;// 回复方式 
    const char *actionname;// 动作名称 
    char *outbuf;// 结果输出使用 
}xlx_action_data;

// 指令任务帧，用来帮助执行延迟任务 
void xlx_action_task_frame(void);

/**
 * at指令数据处理入口
 */
void xlx_action_process_at_data(char *outresult,int argc,char **argv);

/**
 * 指令数据处理入口
 * @param t 是平台还是短信
 * @param actionid 任务id
 * @param tel 电话号码
 * @param data 指令内容
 * @param len 指令内容长度
 */
void xlx_action_process_data(ACTION_TYPE t,unsigned short actionid,const char *tel,const char *data,int len);

// 设备版本信息 
void xlx_action_version(xlx_action_data *data);
void xlx_action_demo(xlx_action_data *data);
void xlx_action_file_test(xlx_action_data *data);
// 登录鉴权 
void xlx_action_login(xlx_action_data *data);
// 修改密码,短信平台需要先login,平台可以强制修改 
void xlx_action_setpwd(xlx_action_data *data);
// 设备立即重启 

void xlx_action_restart(xlx_action_data *data);
void xlx_action_tasklist(xlx_action_data *data);
// 恢复出厂设置 
void xlx_action_reset(xlx_action_data *data);

// 设置连接服务器的ip和端口 
void xlx_action_setserver(xlx_action_data *data);

// 设置定位数据上报时间间隔（秒） 
void xlx_action_setgpscfg(xlx_action_data *data);

//设置心跳上报时间间隔（秒）
void xlx_action_setHeartbeat(xlx_action_data *data);

void xlx_action_GetNextWakeup(xlx_action_data *data);

// 机器本地开始打印日志 
void xlx_action_showlog(xlx_action_data *data);

// 关机
void xlx_action_hardpoweroff(xlx_action_data *data);



// 设备立即定位 
void xlx_action_getgps(xlx_action_data *data);

/* 马上采集一次位置信息 */
void xlx_action_nowgps(xlx_action_data *data);

// 设备立即关机 
void xlx_action_poweroff(xlx_action_data *data);

// 设备立即开机 
void xlx_action_poweron(xlx_action_data *data);

// 声控告警状态设置（持续声控告警，智能声控告警，开启，关闭) 
void xlx_action_recordaudio(xlx_action_data *data);

// 检查设备升级 
void xlx_action_checkupgrade(xlx_action_data *data);

// 开关网络功能 
void xlx_action_enablenet(xlx_action_data *data);

// 设置震动灵敏度 
void xlx_action_setshake(xlx_action_data *data);

// 设置声控告警灵敏度 
void xlx_action_setaudiodbm(xlx_action_data *data);

// 获取声控告警灵敏度相关信息 
void xlx_action_getaudiodbm(xlx_action_data *data);

// 设置sos号码 
void xlx_action_setsos(xlx_action_data *data);

// 设置号码接听白名单 
void xlx_action_setwhite(xlx_action_data *data);


void xlx_action_GetWakeupSrc(xlx_action_data *data);
void xlx_action_ReadSensorReg(xlx_action_data *data);
void xlx_action_WriteSensorReg(xlx_action_data *data);
void xlx_action_Callout(xlx_action_data *data);
void xlx_action_Callend(xlx_action_data *data);
void xlx_action_PlayTTS(xlx_action_data *data);
void xlx_action_StopTTS(xlx_action_data *data);
void xlx_action_SendSMS(xlx_action_data *data);
void xlx_action_GetTime(xlx_action_data *data);
void xlx_action_TestWifiscan(xlx_action_data *data);
void xlx_action_HourRemind(xlx_action_data *data);
void xlx_action_AutoFlay(xlx_action_data *data);
void xlx_action_VolumeControl(xlx_action_data *data);
void xlx_action_SetSysPmWork(xlx_action_data *data);
void xlx_action_SetSpeaker(xlx_action_data *data);
void xlx_action_RtmpParams(xlx_action_data *data);
void xlx_action_showpullpacklog(xlx_action_data *data);
void xlx_action_LogShowRtmpFileData(xlx_action_data *data);
void xlx_action_SetOpenGpsInterval(xlx_action_data *data);
void xlx_action_SetPullRtmpBuffSize(xlx_action_data *data);
void xlx_action_SetSosCall(xlx_action_data *data);
void xlx_action_SetSosThreadState(xlx_action_data *data);
void xlx_action_SetAllEvent(xlx_action_data *data);
void xlx_action_Set1sTimer(xlx_action_data *data);
void xlx_action_GpioRW(xlx_action_data *data);
void xlx_action_PlayKeyTTS(xlx_action_data *data);
void xlx_action_atcmd(xlx_action_data *data);

void xlx_action_GetStampToTime(xlx_action_data *data);

void xlx_action_SyncNtpTime(xlx_action_data *data);

void xlx_action_SetLed(xlx_action_data *data);

// apn设置 
void xlx_action_setapn(xlx_action_data *data);

// 设备信息查询 
void xlx_action_deviceinfo(xlx_action_data *data);

// 开启拐点补传 
void xlx_action_setuploadturn(xlx_action_data *data);

// 断油电控制 
void xlx_action_powerswitch(xlx_action_data *data);

// 设置超速阀值 
void xlx_action_setspeed(xlx_action_data *data);

// 开启设备指定功能 
void xlx_action_open(xlx_action_data *data);

// 关闭设备指定功能 
void xlx_action_close(xlx_action_data *data);

// 获取设备已经开启的所有功能 
void xlx_action_openlist(xlx_action_data *data);

// 获取设备已经关闭的所有功能 
void xlx_action_closelist(xlx_action_data *data);

// 飞行模式设置 
void xlx_action_flymode(xlx_action_data *data);

// 短信唤醒 
void xlx_action_wekup(xlx_action_data *data);

// 设置录音文件单个文件录制时长 
void xlx_action_setaudiofile(xlx_action_data *data);

/**
 * 切换模式
 */
void xlx_action_switchmode(xlx_action_data *data);

// 设置录音文件码率 
void xlx_action_setaudiobitrate(xlx_action_data *data);

// 开启网络日志 
void xlx_action_netlog(xlx_action_data *data);

// 开启gps原始数据日志打印 
void xlx_action_gpslog(xlx_action_data *data);



// 给设备写入新的imei 
void xlx_action_writeimei(xlx_action_data *data);

// 获取sos列表 
void xlx_action_getsos(xlx_action_data *data);

// 获取电话白名单列表 
void xlx_action_getwhite(xlx_action_data *data);

// 获取gps详细信息 
void xlx_action_getgpsinfo(xlx_action_data *data);

// 设备时间相关 
void xlx_action_devicetime(xlx_action_data *data);

// 删除tutu_xx.cfg所有配置文件 
void xlx_action_clearcfg(xlx_action_data *data);

// 获取电池信息 
void xlx_action_getbattery(xlx_action_data *data);

// 刷新，立马上报心跳和设备状态到服务器 
void xlx_action_refresh(xlx_action_data *data);

// 设置低电报警阈值 
void xlx_action_lowvoltage(xlx_action_data *data);

// 设置声控告警灵敏度,声控告警持续时间 
void xlx_action_setaudiodbmh(xlx_action_data *data);

//查看iccid
void xlx_action_geticcid(xlx_action_data *data);

//测试模式
void tutucation_testmode(xlx_action_data *data);

//是否能测试
void xlx_action_testcan(xlx_action_data *data);

//返回光感状态信息
void xlx_action_lightinfo(xlx_action_data *data);

//测试震动次数
void xlx_action_testshake(xlx_action_data *data);

//测试声控麦克
void xlx_action_testmicirq(xlx_action_data *data);

//开始麦克风测试
void xlx_action_testmicstart(xlx_action_data *data);

//停止麦克风测试
void xlx_action_testmicstop(xlx_action_data *data);

//关闭设备电源
void xlx_action_gameover(xlx_action_data *data);

void xlx_action_rtmppull(xlx_action_data *data);
void xlx_action_RtmpStopPull(xlx_action_data *data);

//开启rtmp推送
void xlx_action_rtmpopen(xlx_action_data *data);

//关闭rtmp推送
void xlx_action_rtmpclose(xlx_action_data *data);

//查询rtmp基本信息及状态
void xlx_action_rtmpinfo(xlx_action_data *data);

//rtmp续期，不续期则到期后自动断开推送
void xlx_action_rtmpvalid(xlx_action_data *data);

// 找车，唤醒车辆闪烁 
void xlx_action_findcar(xlx_action_data *data);

//开启震动后自动采集gps
void xlx_action_shakegps(xlx_action_data* data);

//开启gSensor数据采集，上报到服务器
void xlx_action_gsensorlog(xlx_action_data *data);

//测试射频校准状态
void xlx_action_testcheckrf(xlx_action_data *data);

//测试WIFI
void xlx_action_testwifi(xlx_action_data *data);

void tutu_set_auto_poweroff_time(unsigned int delay);

void xlx_action_GetHeap(xlx_action_data *data);

#endif /* tutu_action_h */
